package com.doit.demo95;

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Stream;

/*
    给定一个数字列表，如何返回一个由每个数的平方构成的列表呢？
    比如给定【1，2，3，4，5】， 应该返回【1，4，9，16，25】。

    统计三个字的省份个数
    统计名字中包含方位名词的省份(东南西北)的个数
    打印包含方位名词的普通省份的名字(非自治区 直辖市 特别行政区)
    将所有特殊省份(自治区 直辖市 特别行政区)提取出来并放到新数组中
 */
public class test03 {
    public static void main(String[] args) {
        test1();
        test2();
    }

    private static void test2() {
        String[] arr={"河北省","陕西省","吉林省","辽宁省","黑龙江省","陕西省","甘肃省","青海省","山东省","福建省","浙江省",
                "台湾省","河南省","湖北省","湖南省","江西省","江苏省","安徽省","广东省","海南省","四川省","贵州省","云南省",
                "北京市", "天津市","上海市","重庆市",
                "内蒙古自治区","新疆维吾尔自治区","宁夏回族自治区","广西壮族自治区","西藏自治区","香港特别行政区", "澳门特别行政区"};

        long count = Stream.of(arr).filter(s -> s.length() == 3).filter(s->s.endsWith("省")).count();
        System.out.println("三个字的省份个数有:"+count+"个");

        long count1 = Stream.of(arr)/*.filter(s -> s.endsWith("省"))*/.filter(s -> s.contains("东") || s.contains("西")
                || s.contains("南") || s.contains("北")).count();
        System.out.println("东南西北个数为:"+count1+"个");

        Stream.of(arr).filter(s -> s.endsWith("省")).filter(s -> s.contains("东") || s.contains("西")
                || s.contains("南") || s.contains("北")).forEach(s-> System.out.print(s+"  "));

        System.out.println();
        String[] newArr = Stream.of(arr).filter(s -> s.endsWith("市") || s.endsWith("区")).toArray(String[]::new);
        System.out.println(Arrays.toString(newArr));

    }

    public static void test1() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        list.stream().map((x) -> x*x).forEach(System.out::println);
    }

}
